#ifndef LISTADENODOSORDENADOS_H_
#define LISTADENODOSORDENADOS_H_

#include "NodoArbolHuffman.h"

// Esta clase tiene todos los nodos del arbol ordenados de mayor a menor por numero de orden y en orden
// no decreciente de frecuencia.
// Sirve para buscar el nodo mas grande que tenga la frecuencia deseada
class ListaDeNodosOrdenados {
private:
	unsigned int cantidadActual;
	unsigned int cantidadMaxima;
	NodoArbolHuffman* nodos[514];
public:
	ListaDeNodosOrdenados();
	~ListaDeNodosOrdenados();
	// Agrega el nodo en orden
	void agregarNodo(NodoArbolHuffman* nodo);
	// Dada una frecuencia, devuelve el bloque de maximo orden (numero) que tenga esa frecuencia.
	NodoArbolHuffman* buscarMaxEnBloque(unsigned int frecuencia);
	// Intercambia dos nodos
	void intercambiarNodos(unsigned int numeroNodoAtual, unsigned int numeroNodoMax);
	// Devuelve el nodo en la lista que tenga el caracter deseado
	NodoArbolHuffman* buscarCaracter(unsigned int caracter);
};

#endif /* LISTADENODOSORDENADOS_H_ */
